package com.liao.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.liao.dto.BorrowDTO;
import com.liao.dto.ReturnDTO;
import com.liao.entity.BorrowRecord;

/**
 * 借阅记录服务接口
 */
public interface BorrowRecordService extends IService<BorrowRecord> {

    /**
     * 分页查询借阅记录列表
     *
     * @param page   分页参数
     * @param userId 用户ID（可选）
     * @param bookId 图书ID（可选）
     * @param status 状态（可选）
     * @return 分页借阅记录列表
     */
    Page<BorrowRecord> getBorrowPage(Page<BorrowRecord> page, Long userId, Long bookId, Integer status);

    /**
     * 借阅图书
     *
     * @param borrowDTO 借阅信息
     * @return 借阅记录
     */
    BorrowRecord borrowBook(BorrowDTO borrowDTO);

    /**
     * 归还图书
     *
     * @param returnDTO 归还信息
     * @return 借阅记录
     */
    BorrowRecord returnBook(ReturnDTO returnDTO);

    /**
     * 获取用户的借阅历史
     *
     * @param page   分页参数
     * @param userId 用户ID
     * @return 用户借阅历史
     */
    Page<BorrowRecord> getUserBorrowHistory(Page<BorrowRecord> page, Long userId);

    /**
     * 获取图书的借阅历史
     *
     * @param page   分页参数
     * @param bookId 图书ID
     * @return 图书借阅历史
     */
    Page<BorrowRecord> getBookBorrowHistory(Page<BorrowRecord> page, Long bookId);
}